package com.example.common

import android.content.Context
import android.os.Build
import android.os.Environment
import java.io.File

/**
 * 日志框架初始化工具类
 */
object LoggerInitializer {

    /**
     * 在Application中初始化日志框架
     * @param context 上下文
     * @param isDebug 是否为调试模式
     * @param logDir 日志文件存储目录，为null则使用默认目录
     */
    fun init(context: Context, isDebug: Boolean, logDir: String? = null) {
        // 根据是否为调试模式设置日志级别
        val logLevel = if (isDebug) Logger.Level.VERBOSE else Logger.Level.INFO

        // 初始化日志配置
        Logger.init(
            logLevel = logLevel,
            showThreadInfo = isDebug,
            showCallerInfo = isDebug,
            writeToFile = !isDebug, // 通常在非调试模式下才写入文件
            logDir = logDir ?: getDefaultLogDir(context)
        )

        // 记录初始化信息
        Logger.i(message = "Logger initialized. Debug mode: $isDebug")
        Logger.i(message = "Android SDK version: ${Build.VERSION.SDK_INT}")
        Logger.i(message = "Device model: ${Build.MODEL}")
    }

    /**
     * 获取默认日志存储目录
     */
    private fun getDefaultLogDir(context: Context): String {
        return try {
            // 优先使用应用内部存储
            context.getExternalFilesDir("logs")?.absolutePath
                ?: (context.filesDir.absolutePath + File.separator + "logs")
        } catch (e: Exception) {
            //  fallback到外部存储
            Environment.getExternalStorageDirectory()
                .absolutePath + File.separator + "Android" + File.separator + "data" +
                File.separator + context.packageName + File.separator + "logs"
        }
    }
}
